package com.zz.inventory.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;

/**
 * 考试练习任务对象 exams
 * 
 * @author zz
 * @date 2025-07-03
 */
public class Exams extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 考试ID */
    private Long examId;

    /** 所属学校ID */
    @Excel(name = "所属学校ID")
    private Long schoolId;

    /** 实验场景ID */
    @Excel(name = "实验场景ID")
    private Long scenarioId;

    /** 所属机房ID (可选，如果跨机房则为空) */
    @Excel(name = "所属机房ID (可选，如果跨机房则为空)")
    private Long labId;

    /** 考试/练习名称 */
    @Excel(name = "考试/练习名称")
    private String examName;

    /** 类型: 考试, 练习 */
    @Excel(name = "类型: 考试, 练习")
    private String examType;

    /** 开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startTime;

    /** 结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endTime;

    /** 设定时长（分钟） */
    @Excel(name = "设定时长", readConverterExp = "分=钟")
    private Long durationMinutes;

    /** 状态: 已安排, 进行中, 已完成, 已取消 */
    @Excel(name = "状态: 已安排, 进行中, 已完成, 已取消")
    private String status;

    /** 考试参数配置 (JSON格式，如题目顺序、是否显示提示等) */
    @Excel(name = "考试参数配置 (JSON格式，如题目顺序、是否显示提示等)")
    private String parameters;

    /** 创建者 (学校用户ID) */
    @Excel(name = "创建者 (学校用户ID)")
    private Long createdBySchoolUserId;

    public void setExamId(Long examId) 
    {
        this.examId = examId;
    }

    public Long getExamId() 
    {
        return examId;
    }

    public void setSchoolId(Long schoolId) 
    {
        this.schoolId = schoolId;
    }

    public Long getSchoolId() 
    {
        return schoolId;
    }

    public void setScenarioId(Long scenarioId) 
    {
        this.scenarioId = scenarioId;
    }

    public Long getScenarioId() 
    {
        return scenarioId;
    }

    public void setLabId(Long labId) 
    {
        this.labId = labId;
    }

    public Long getLabId() 
    {
        return labId;
    }

    public void setExamName(String examName) 
    {
        this.examName = examName;
    }

    public String getExamName() 
    {
        return examName;
    }

    public void setExamType(String examType) 
    {
        this.examType = examType;
    }

    public String getExamType() 
    {
        return examType;
    }

    public void setStartTime(Date startTime) 
    {
        this.startTime = startTime;
    }

    public Date getStartTime() 
    {
        return startTime;
    }

    public void setEndTime(Date endTime) 
    {
        this.endTime = endTime;
    }

    public Date getEndTime() 
    {
        return endTime;
    }

    public void setDurationMinutes(Long durationMinutes) 
    {
        this.durationMinutes = durationMinutes;
    }

    public Long getDurationMinutes() 
    {
        return durationMinutes;
    }

    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }

    public void setParameters(String parameters) 
    {
        this.parameters = parameters;
    }

    public String getParameters() 
    {
        return parameters;
    }

    public void setCreatedBySchoolUserId(Long createdBySchoolUserId) 
    {
        this.createdBySchoolUserId = createdBySchoolUserId;
    }

    public Long getCreatedBySchoolUserId() 
    {
        return createdBySchoolUserId;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("examId", getExamId())
            .append("schoolId", getSchoolId())
            .append("scenarioId", getScenarioId())
            .append("labId", getLabId())
            .append("examName", getExamName())
            .append("examType", getExamType())
            .append("startTime", getStartTime())
            .append("endTime", getEndTime())
            .append("durationMinutes", getDurationMinutes())
            .append("status", getStatus())
            .append("parameters", getParameters())
            .append("createTime", getCreateTime())
            .append("createdBySchoolUserId", getCreatedBySchoolUserId())
            .toString();
    }
}
